package com.giCompiler.business;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import com.giCompiler.bean.Pacote;
import com.giCompiler.bean.Projeto;
import com.giCompiler.dao.PacoteDao;
import com.giCompiler.exception.BusinessException;

public class CriarPacoteBusiness {
	
	public void criarPacoteBusiness(int idPacote, Projeto projeto ,String nomePacote)throws BusinessException{

		Pacote pacote = new Pacote();
		
		//Verifica se o usuario seleciono o diretorio com o nome projeto
		if(idPacote < 0){
			pacote.setIdPacSup(0);
			idPacote = 0;
		}else
			pacote.setIdPacSup(idPacote);
		
		if(verificarDisponibilidadeNomePacote(idPacote, projeto.getIdProjeto(), nomePacote) == true){
			if(!nomePacote.equals("default")){
		
				pacote.setIdPacote(-1);
				pacote.setIdProjeto(projeto.getIdProjeto());
				pacote.setNome(nomePacote);
				pacote.setDataCriacao(pegarDataAtual());			
				
				new PacoteDao().inserir(pacote);
					
			}else{				
				System.out.println("O nome do pacote é invalido!");
				throw new BusinessException("O nome do pacote é invalido!");				
			}
		}else{
			System.out.println("Ja existe um pacote com o nome escolhido!");
			throw new BusinessException("Ja existe um pacote com o nome escolhido!");
		}		
	}
	
	public boolean verificarDisponibilidadeNomePacote(int idPacote, int idProjeto, String nomePacote){
		
		List<Pacote> pacotes = new ArrayList <Pacote> ();
		PacoteDao pacoteDao = new PacoteDao();
		
		pacotes = pacoteDao.verificarDisponibilidadeNomePacote(idPacote, idProjeto, nomePacote);
		
		if(pacotes.isEmpty())
			return true; /*Disponivel*/
		else
			return false; /*Não disponivel*/
					
	}
	
	public Date pegarDataAtual(){
		
		return new Date(System.currentTimeMillis());
		
	}
	
}
